
package fr.utt.lo02.projet;
import java.io.*;
import java.util.Random;

public abstract class Joueur {

    protected String nom;
    protected String prenom;
    protected Main main ;
    private int numero;
    private boolean passtour;
    
    public Joueur(String nom, String prenom, int numero){
        
    	this.nom=nom;
        this.prenom=prenom;
        this.numero=numero;
        main=new Main();
        passtour=false;
    
    }
    
    public abstract void jouer(Partie p);
    
    public void piocher(Partie p){
        this.ajouterCarte(p.getPioche().piocher());
    }
    
    public void piocher(Partie p, int nbcartes){
        for(int i=0;i<nbcartes;i++){
            this.ajouterCarte(p.getPioche().piocher());
        }
    }
    
    public void piocher(Joueur j, int nbcartes){
        Random r=new Random();
        this.ajouterCarte(j.getMain().piocher(r.nextInt(j.getMain().getSize())));
    }
    
    public void ajouterCarte(Carte c){
        main.ajouterCarte(c);
    }
    
    public void afficherInfos(){
        System.out.println(this.getNom()+" "+this.getPrenom()+", son jeu est:\n");
        afficherJeuNumerote();
        System.out.println("\n ----------------------------------------");
    }
    
    public void afficherJeuNumerote(){
    	for (int i=0;i<getMain().getSize();i++){
    		System.out.println("Carte "+(i+1)+" : "+getMain().getListCartes().get(i));
    	}
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }
    
    public Main getMain() {
        return main;
    }
    
    public String getNom(){
    	return nom;
    }
    public String getPrenom(){
    	return prenom;
    }
    public abstract boolean isVirtuel();

    /**
     * @return the numero
     */
    public int getNumero() {
        return numero;
    }

    /**
     * @param numero the numero to set
     */
    public void setNumero(int numero) {
        this.numero = numero;
    }

    /**
     * @return the passtour
     */
    public boolean isPasstour() {
        return passtour;
    }

    /**
     * @param passtour the passtour to set
     */
    public void setPasstour(boolean passtour) {
        this.passtour = passtour;
    }

}
